package com.blackcat.annotation.async.bean;

import org.springframework.scheduling.annotation.Async;

/**
 * <p> 描述 :
 * @author : blackcat
 * @date  : 2020/8/3 14:06
*/
public class AsyncBean {

	/**
	 * Async 必须不同类间调用： A类--》B类.C方法()（@Async注释在B类/方法中），
	 * 如果在同一个类中调用，会变同步执行,例如:A类.B()-->A类.@Async C()
	 *
	 * 如果在同一个类中调用，会变同步执行
	*/
	@Async("jobExecutor")
	public void asyncMethod() throws InterruptedException {
		System.out.println(Thread.currentThread().getName()+"异步执行");
		Thread.sleep(1000);
	}

	public static void main(String[] args) throws InterruptedException {
		/** 如果在同一个类中调用，会变同步执行 */
		System.out.println(Thread.currentThread().getName()+"主线程请求异步执行asyncMethod");
		AsyncBean asyncBean = new AsyncBean();
		asyncBean.asyncMethod();
		System.out.println(Thread.currentThread().getName()+"主线程请求异步执行syncMethod结束");
	}
}
